package review.Day_0329;

import java.util.Stack;

/**
 * @author zxc
 * @date 2023/03/29 20:18
 **/
public class Solution04 {
    // 使用两个栈，来实现队列
    // 输入栈 ：用于向队列尾部添加元素;
    Stack<Integer> stack;
    // 输出栈 ：用于输出队列头元素：
    Stack<Integer> temp;
    public Solution04() {
        stack = new Stack<>();
        temp = new Stack<>();
    }
    // 输入栈 ：只需要接收 添加到队列尾部的元素;
    public void appendTail(int value) {
        stack.push(value);
    }
    // 输出栈 ：有且仅有在输出栈为空时，才会将弹出输入栈中元素 && 将其加入到输出栈中;
    public int deleteHead() {
        if(temp.isEmpty()){
            // 输入输出栈，都为空
            if(stack.isEmpty()){
                return -1;
            }
            // 输入栈中所有元素，全部压栈到输出栈中;
            while(!stack.isEmpty()){
                temp.push(stack.pop());
            }
        }
        // 直接返回输出栈的栈顶元素即可;
        return temp.pop();
    }
}
